/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.taobao.ibatiside.model.configv3.impl;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EFactoryImpl;

import org.eclipse.emf.ecore.plugin.EcorePlugin;

import org.taobao.ibatiside.model.configv3.*;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Factory</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class Configv3FactoryImpl extends EFactoryImpl implements Configv3Factory {
	/**
	 * Creates the default factory implementation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static Configv3Factory init() {
		try {
			Configv3Factory theConfigv3Factory = (Configv3Factory)EPackage.Registry.INSTANCE.getEFactory("platform:/resource/org.taobao.ibatiside.model/model/config3.xsd"); 
			if (theConfigv3Factory != null) {
				return theConfigv3Factory;
			}
		}
		catch (Exception exception) {
			EcorePlugin.INSTANCE.log(exception);
		}
		return new Configv3FactoryImpl();
	}

	/**
	 * Creates an instance of the factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Configv3FactoryImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public EObject create(EClass eClass) {
		switch (eClass.getClassifierID()) {
			case Configv3Package.CONFIGURATION_TYPE: return createConfigurationType();
			case Configv3Package.DATABASE_ID_PROVIDER_TYPE: return createDatabaseIdProviderType();
			case Configv3Package.DATA_SOURCE_TYPE: return createDataSourceType();
			case Configv3Package.DOCUMENT_ROOT: return createDocumentRoot();
			case Configv3Package.ENVIRONMENTS_TYPE: return createEnvironmentsType();
			case Configv3Package.ENVIRONMENT_TYPE: return createEnvironmentType();
			case Configv3Package.MAPPERS_TYPE: return createMappersType();
			case Configv3Package.MAPPER_TYPE: return createMapperType();
			case Configv3Package.OBJECT_FACTORY_TYPE: return createObjectFactoryType();
			case Configv3Package.OBJECT_WRAPPER_FACTORY_TYPE: return createObjectWrapperFactoryType();
			case Configv3Package.PACKAGE_TYPE: return createPackageType();
			case Configv3Package.PLUGINS_TYPE: return createPluginsType();
			case Configv3Package.PLUGIN_TYPE: return createPluginType();
			case Configv3Package.PROPERTIES_TYPE: return createPropertiesType();
			case Configv3Package.PROPERTY_TYPE: return createPropertyType();
			case Configv3Package.SETTINGS_TYPE: return createSettingsType();
			case Configv3Package.SETTING_TYPE: return createSettingType();
			case Configv3Package.TRANSACTION_MANAGER_TYPE: return createTransactionManagerType();
			case Configv3Package.TYPE_ALIASES_TYPE: return createTypeAliasesType();
			case Configv3Package.TYPE_ALIAS_TYPE: return createTypeAliasType();
			case Configv3Package.TYPE_HANDLERS_TYPE: return createTypeHandlersType();
			case Configv3Package.TYPE_HANDLER_TYPE: return createTypeHandlerType();
			default:
				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
		}
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ConfigurationType createConfigurationType() {
		ConfigurationTypeImpl configurationType = new ConfigurationTypeImpl();
		return configurationType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DatabaseIdProviderType createDatabaseIdProviderType() {
		DatabaseIdProviderTypeImpl databaseIdProviderType = new DatabaseIdProviderTypeImpl();
		return databaseIdProviderType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DataSourceType createDataSourceType() {
		DataSourceTypeImpl dataSourceType = new DataSourceTypeImpl();
		return dataSourceType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DocumentRoot createDocumentRoot() {
		DocumentRootImpl documentRoot = new DocumentRootImpl();
		return documentRoot;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EnvironmentsType createEnvironmentsType() {
		EnvironmentsTypeImpl environmentsType = new EnvironmentsTypeImpl();
		return environmentsType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EnvironmentType createEnvironmentType() {
		EnvironmentTypeImpl environmentType = new EnvironmentTypeImpl();
		return environmentType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MappersType createMappersType() {
		MappersTypeImpl mappersType = new MappersTypeImpl();
		return mappersType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MapperType createMapperType() {
		MapperTypeImpl mapperType = new MapperTypeImpl();
		return mapperType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ObjectFactoryType createObjectFactoryType() {
		ObjectFactoryTypeImpl objectFactoryType = new ObjectFactoryTypeImpl();
		return objectFactoryType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ObjectWrapperFactoryType createObjectWrapperFactoryType() {
		ObjectWrapperFactoryTypeImpl objectWrapperFactoryType = new ObjectWrapperFactoryTypeImpl();
		return objectWrapperFactoryType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PackageType createPackageType() {
		PackageTypeImpl packageType = new PackageTypeImpl();
		return packageType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PluginsType createPluginsType() {
		PluginsTypeImpl pluginsType = new PluginsTypeImpl();
		return pluginsType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PluginType createPluginType() {
		PluginTypeImpl pluginType = new PluginTypeImpl();
		return pluginType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PropertiesType createPropertiesType() {
		PropertiesTypeImpl propertiesType = new PropertiesTypeImpl();
		return propertiesType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PropertyType createPropertyType() {
		PropertyTypeImpl propertyType = new PropertyTypeImpl();
		return propertyType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SettingsType createSettingsType() {
		SettingsTypeImpl settingsType = new SettingsTypeImpl();
		return settingsType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SettingType createSettingType() {
		SettingTypeImpl settingType = new SettingTypeImpl();
		return settingType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TransactionManagerType createTransactionManagerType() {
		TransactionManagerTypeImpl transactionManagerType = new TransactionManagerTypeImpl();
		return transactionManagerType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeAliasesType createTypeAliasesType() {
		TypeAliasesTypeImpl typeAliasesType = new TypeAliasesTypeImpl();
		return typeAliasesType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeAliasType createTypeAliasType() {
		TypeAliasTypeImpl typeAliasType = new TypeAliasTypeImpl();
		return typeAliasType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeHandlersType createTypeHandlersType() {
		TypeHandlersTypeImpl typeHandlersType = new TypeHandlersTypeImpl();
		return typeHandlersType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeHandlerType createTypeHandlerType() {
		TypeHandlerTypeImpl typeHandlerType = new TypeHandlerTypeImpl();
		return typeHandlerType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Configv3Package getConfigv3Package() {
		return (Configv3Package)getEPackage();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @deprecated
	 * @generated
	 */
	@Deprecated
	public static Configv3Package getPackage() {
		return Configv3Package.eINSTANCE;
	}

} //Configv3FactoryImpl
